import { getToken,setToken,removeToken } from "@/utils/auth"
import {login,getUserProfile,getUserDetailById} from '@/api/user'
//暴露仓库的实例对象
export default{
  namespaced:true,
  state:{
    token:getToken()||'',
    userInfo:{}
  },
  mutations:{
    // 更新token
    updateToken(state,token){
      state.token=token
      // 进行token的持久化
      setToken(token)
    },
    // 删除token
    removeToken(state,token){
      state.token = ''
      // 进行token的持久化
      removeToken()
    },
    // 更新用户信息
    updateUserInfo(state,info){
      state.userInfo = info
    },
    // 删除用户信息
    deleteUserInfo(state){
      state.userInfo = {}
    }
  },
  actions:{
    // 发送请求获取token存储到vuex中
    async userLogin(context,loginForm){
      // 发送请求获取token
      const res = await login(loginForm)
      console.log(res.data);
      // 将token存到vuex中
      context.commit('updateToken',res.data)
    },
    async getUserInfo(context){
      const res = await getUserProfile()
      console.log(res);
      const info = await getUserDetailById(res.data.userId)
      console.log(info);
      context.commit('updateUserInfo',{...res.data,...info.data})
    },
    logout(context){
      context.commit('removeToken')
      context.commit('deleteUserInfo')
    }
  }
} 